extends 数据基类
class_name 状态数据类

@export var id:String
@export var 状态名:String
@export var 状态图标:Texture
@export var 状态说明:String
@export var 状态颜色:Color
@export var 基础值:float=0
@export var 最小值:float=0
@export var 最大值:float=0
@export var 加成值:float=0
@export var 当前值:float=0:
	set(value):	
		if value>最大值:
			value=最大值
		elif value<最小值:
			value=最小值
		if 当前值!=value:	
			当前值=value	
			当前值变化.emit()
			切换阶段(当前值)
			#if 当前阶段!=null:
				#print(状态名,"-当前阶段为:",当前阶段.阶段名)
	
@export var 阶段数据列表:Array[阶段数据类]=[]
@export var 当前阶段:阶段数据类:
	set(value):
		if value!=当前阶段:
			if 当前阶段!=null:
				退出阶段.emit(当前阶段.阶段影响)
			当前阶段=value
			if 当前阶段!=null:
				进入阶段.emit(当前阶段.阶段影响)
		
signal 退出阶段(影响数据)
signal 进入阶段(影响数据)
signal 当前值变化
#***************************初始化状态***************************
func 初始化(数据:Dictionary):
	初始化阶段数据列表(数据.阶段id列表)
	id=数据.id
	状态名=数据.状态名
	状态图标=GameResource.获取图片(数据.状态图标)
	状态颜色=GameResource.获取颜色(数据.状态颜色)
	状态说明=数据.状态说明	
	基础值=数据.基础值
	最小值=数据.最小值
	最大值=数据.最大值
	加成值=数据.加成值

func 初始化阶段数据列表(阶段id列表:Array):
	for 阶段id in 阶段id列表:
		var 阶段数据=GameFactory.生成数据模型("阶段",阶段id)
		if 阶段数据!=null:
			阶段数据列表.append(阶段数据)
#***************************基类方法***************************
func 当经历时间(分钟数:int):
	当前值+=(加成值*分钟数/15)
	#print(状态名,"-当前值:",当前值)
#***************************状态方法***************************
func 启动状态():
	当前值=基础值
	
func 切换阶段(_当前值:float):
	当前阶段=获取阶段数据(_当前值)

func 获取阶段数据(_当前值:float):
	for 阶段数据 in 阶段数据列表:
		if _当前值>=阶段数据.阶段最小值 and _当前值<=阶段数据.阶段最大值:
			return 阶段数据
	return null
